/**
 * 监听渲染进程，渲染进程向主进程发送指令
 * */

const {ipcMain, shell} = require('electron')



class ipcSend{
    init(win){
        // globalShortcut.register('F5', () => {
        //     win.webContents.send('page-refresh', '') //主进程主动通信到渲染进程
        // })
        ipcMain.on('open-url-shell',(event,url)=>{
            // 打开默认浏览器
            shell.openExternal(url)
            // shell.openExternal('https://baidu.com')
        })
        ipcMain.on('open-path-shell', (event,path) => {
            shell.openPath(path)
        })
        ipcMain.on('send-min-size', () => {
            win.minimize()
        })
        ipcMain.on('send-max-size', () => {
            if(win.isMaximized()){
                win.unmaximize()

            }else{
                win.maximize()

            }
        })
        ipcMain.on('send-close-window', () => {
            win.close()

        })
        // ipcMain.on('send-auto-close', () => {
        //     win.close()
        // })
        ipcMain.on('send-restore', () => {
            win.restore()
        })
        ipcMain.on('send-page-name', (event, pageName) => {
            console.log('setWindowSize',pageName)
            const loginSize={
                width:500,
                height:580
            }
            const pageSize={
                width:1000,
                height: 950
            }
            if (pageName && pageName == 'normalLogin') {
                win.setSize(loginSize.width, loginSize.height)
                win.center()
                win.setMenuBarVisibility(false)

            } else {
                if(this.judgePageSet(win,pageSize,loginSize)){
                    win.setSize(pageSize.width, pageSize.height)
                    win.center()
                    win.setMenuBarVisibility(true)
                }

            }
        })

        // 在主进程中
        ipcMain.on('SAVE_VIDEO', (event, videoUrl) => {
            // 注意：这里我们不能直接使用 videoUrl，因为它是一个 Blob URL
            // 你需要将其转换为 ArrayBuffer 或其他可以在文件系统中保存的格式
            // 示例中省略了此步骤，因为它取决于你的具体实现

            // 假设你已经有了 Blob 数据（例如，通过 FileReader API 读取）
            // 你可以使用 fs.writeFile 或 fs.writeFileSync 来保存文件
            // fs.writeFileSync(path.join(__dirname, 'output.webm'), blobData)
            console.log(videoUrl)
        })

        // 在主进程中
        ipcMain.on('send-stream', (event, stream) => {
            console.log( 'send-stream',stream)
        })
    }

    judgePageSet(win,pageSize,loginSize){
        //    判断普通页面是否重新设置size
        //    不需要重新设置size的情况：1.最大化；2.宽或高有改变
        const size=win.getSize()
        const width=size[0]
        const height=size[1]
        const flag=win.isMaximized() || (width!=pageSize.width && width!=loginSize.width) || (height!=pageSize.height && height!=loginSize.height)    //这几种情况不需要设置size

        return !flag //其它情况需要设置size
    }


}

module.exports = new ipcSend()
